package com.freda.oa.flow.run.service.itf;

import com.freda.oa.flow.run.vo.FlowRunInfoVo;

public interface FlowRunServiceItf {
	/**
	 * 节点工作结束
	 * @param runInfo
	 * @return
	 */
	public abstract int nodeToEnd(FlowRunInfoVo runInfo);
	/**
	 * 常规下一步
	 * @param runInfo
	 * @return
	 */
	public abstract int silmpleToNext(FlowRunInfoVo runInfo);
	/**
	 * 并行下一步
	 * @param runInfo
	 * @return
	 */
	public abstract int foreachToNext(FlowRunInfoVo runInfo);
	/**
	 * 回合下一步
	 * @param runInfo
	 * @return
	 */
	public abstract int joinToNext(FlowRunInfoVo runInfo);
	/**
	 * 状态下一步
	 * @param runInfo
	 * @return
	 */
	public abstract int stateToNext(FlowRunInfoVo runInfo);
	/**
	 * 传阅
	 * @param runInfo
	 * @return
	 */
	public abstract int doPerusal(FlowRunInfoVo runInfo);
	/**
	 * 传阅结束
	 * @param runInfo
	 * @return
	 */
	public abstract int perusalCompleted(FlowRunInfoVo runInfo);
	/**
	 * 流程结束
	 * @param runInfo
	 * @return
	 */
	public abstract int flowToEnd(FlowRunInfoVo runInfo);
	/**
	 * 锁定处理人
	 * @param runInfo
	 * @return
	 */
	public abstract int lockAssignee(FlowRunInfoVo runInfo);
	/**
	 * 解锁处理人
	 * @param runInfo
	 * @return
	 */
	public abstract int unLockAssignee(FlowRunInfoVo runInfo);
	/**
	 * 获得流程信息
	 * @param runInfo
	 * @param type
	 * @return
	 */
	public abstract FlowRunInfoVo getFlowInfo(FlowRunInfoVo runInfo, String type);
	/**
	 * 启动流程
	 * @param runInfo
	 * @return
	 */
	public abstract int flowToStart(FlowRunInfoVo runInfo);

}